package com.xdf.xzymanagementsystem.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;

import java.io.Serializable;
import java.util.List;

/**
 * 由 chanchaw 创建于 2025-3-21 18:43:41，实现功能如下：
 * 1. 实现接口 Serializable
 * 2. 无参构造函数
 * 3. 建造者模式
 * 4. getter,setter,toString()
 * 单据,主表,订单
 */
@Data
@Builder
@Table("order_main")
public class OrderMainDTO implements Serializable {
    @Tolerate
    public OrderMainDTO() {}

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Column("id")
    private Integer id;//自增主键
    @Column("bill_date")
    private java.util.Date billDate;//订单日期/单据日期，表示业务发生的日期，默认填充当天，用户可修改
    @Column("bill_code")
    private String billCode;//单据编号
    @Column("client_id")
    private Integer clientId;//客户主键=jc_contactcompany.id
    @Column("settlement")
    private String settlement;//结算户
    @Column("contract_no")
    private String contractNo;//合同号
    @Column("order_no")
    private String orderNo;//订单号
    @Column("delivery_date")
    private java.util.Date deliveryDate;//交期
    @Column("invoice")
    private Integer invoice;//1表示开票，0不开票
    @Column("emp_id")
    private Integer empId;//业务员=员工主键=jc_employee.id
    @Column("order_category")
    private String orderCategory;//订单类别=jc_simple.category=订单类别
    @Column("currency_type")
    private String currencyType;//币种编号=currency_type.id=币种编号
    @Column("order_technology")
    private String orderTechnology;//订单工艺=jc_simple.category=订单工艺
    @Column("progress")
    private String progress;//生产进度：坯布、前处理、染色、后处理、成品、已完成
    @Column("seq")
    private Float seq;//排序序号
    @Column("state")
    private Integer state;//状态，默认1有效，0作废，2已审核，3已驳回
    @Column("is_delete")
    private Integer isDelete;//删除标识，默认0未删除，1表示删除。mybatis-flex默认使用该名称作为逻辑删除的标识
    @Column("remark")
    private String remark;//备注
    @Column("sys_remark")
    private String sysRemark;//系统备注，系统在做自动化操作时用于说明业务逻辑
    @Column("create_time")
    private java.util.Date createTime;//创建时间
    @Column("create_user")
    private String createUser;//创建人
    @Column("update_time")
    private java.util.Date updateTime;//最后一次修改时间
    @Column("update_user")
    private String updateUser;//最后一次修改人
    private List<OrderDetail> detailList;//订单明细
}
